﻿#ifndef BUTTON_H
#define BUTTON_H

#include <QObject>
#include <QPushButton>
#include <QPainter>
#include <QColor>
#include <QSize>
#include <QMouseEvent>

class Button : public QPushButton
{
    Q_OBJECT
public:
    explicit Button(QWidget* parent = nullptr); // 必须有的构造函数
    Button(const QString& text, const QColor& color, QWidget* parent = nullptr);
    // 设置正常颜色的方法
    void setNormalColor(const QColor& color);

    // 设置文本颜色的方法
    void setTextColor(const QColor& color);
protected:
    // 重写paintEvent方法，自定义按钮的绘制
    void paintEvent(QPaintEvent* event) override;

    // 重写 enterEvent 方法，处理鼠标进入事件
    void enterEvent(QEvent* event) override;

    // 重写 leaveEvent 方法，处理鼠标离开事件
    void leaveEvent(QEvent* event) override;

    // 重写 mousePressEvent 方法，处理鼠标按下事件
    void mousePressEvent(QMouseEvent* event) override;

    // 重写 mouseReleaseEvent 方法，处理鼠标释放事件
    void mouseReleaseEvent(QMouseEvent* event) override;

private:
    QColor m_normalColor; // 正常状态的颜色
    QColor m_hoverColor;  // 鼠标滑过状态的颜色
    QColor m_pressColor;  // 鼠标按下状态的颜色
    QColor m_currentColor; // 当前状态的颜色
    QColor m_textColor; // 文本颜色
};

#endif // BUTTON_H
